package br.com.caelum.argentum.modelo;

import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Calendar;
import java.util.List;

public class CandlestickFactory {

	public Candlestick constroiCandleParaData(Calendar data, List<Negociacao> negociacoes)
	{
		/*double maximo = negociacoes.get(0).getPreco();
		double minimo = negociacoes.get(0).getPreco();*/
		
		double maximo = Double.MIN_VALUE;
		double minimo = Double.MAX_VALUE;		
		BigDecimal volume = new BigDecimal(0,MathContext.DECIMAL64);

		for (Negociacao negociacao : negociacoes) {

			volume.add(BigDecimal.valueOf(negociacao.getVolume()));

			if(negociacao.getPreco() > maximo){
				maximo = negociacao.getPreco();
			} else if(negociacao.getPreco() < minimo) {
				minimo = negociacao.getPreco();
			}
		}

		double abertura = negociacoes.isEmpty() ? 0 : negociacoes.get(0).getPreco();
		double fechamento = negociacoes.isEmpty() ? 0 : negociacoes.get(negociacoes.size() - 1).getPreco();

		return new Candlestick(abertura, fechamento, minimo, maximo, volume, data);
	}
}
